| | | | | | | | | | | | | | | | | | | | | |
<?xml version="1.0" standalone="no" encoding="windows-1252"?> |
<!-- Generated by ThunderDome XBRL - 05:17PM UTC 2019-10-30 --> |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2017-01-31" xmlns:currency="http://xbrl.sec.gov/currency/2017-01-31" xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2018-01-31" xmlns:invest="http://xbrl.sec.gov/invest/2013-01-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2011-01-31" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:nwpx="http://www.nwpipe.com/20190930" xmlns:sic="http://xbrl.sec.gov/sic/2011-01-31" xmlns:srt="http://fasb.org/srt/2019-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2018-01-31" xmlns:us-gaap="http://fasb.org/us-gaap/2019-01-31" xmlns:us-types="http://fasb.org/us-types/2019-01-31" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.nwpipe.com/20190930"> |
| <xsd:import namespace="http://xbrl.sec.gov/country/2017-01-31" schemaLocation="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/invest/2013-01-31" schemaLocation="http://xbrl.sec.gov/invest/2013/invest-2013-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/dtr/type/non-numeric" schemaLocation="http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/naics/2011-01-31" schemaLocation="http://xbrl.sec.gov/naics/2011/naics-2011-01-31.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/stpr/2018-01-31" schemaLocation="https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/> |
| <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/sic/2011-01-31" schemaLocation="http://xbrl.sec.gov/sic/2011/sic-2011-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/dtr/type/numeric" schemaLocation="http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/exch/2018-01-31" schemaLocation="https://xbrl.sec.gov/exch/2018/exch-2018-01-31.xsd"/> |
| <xsd:import namespace="http://www.xbrl.org/2009/role/negated" schemaLocation="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd"/> |
| <xsd:import namespace="http://xbrl.sec.gov/currency/2017-01-31" schemaLocation="http://xbrl.sec.gov/currency/2017/currency-2017-01-31.xsd"/> |
| <xsd:annotation> |
| | <xsd:appinfo> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20190930_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20190930_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20190930_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/> |
| | | <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20190930_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/> |
| | | <link:roleType id="statement-document-and-entity-information" roleURI="http://www.nwpipe.com/20190930/role/statement-document-and-entity-information"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 000 - Document - Document And Entity Information </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-statements-of-operations-unaudited" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-statements-of-operations-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 001 - Statement - Condensed Consolidated Statements of Operations (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-statements-of-comprehensive-income-unaudited" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-statements-of-comprehensive-income-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 002 - Statement - Condensed Consolidated Statements of Comprehensive Income (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-balance-sheets-current-period-unaudited" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-balance-sheets-current-period-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 003 - Statement - Condensed Consolidated Balance Sheets (Current Period Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-balance-sheets-current-period-unaudited-parentheticals" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-balance-sheets-current-period-unaudited-parentheticals"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 004 - Statement - Condensed Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-statements-of-stockholders-equity-unaudited" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-statements-of-stockholders-equity-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 005 - Statement - Condensed Consolidated Statements of Stockholders' Equity (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-statements-of-stockholders-equity-unaudited-parentheticals" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-statements-of-stockholders-equity-unaudited-parentheticals"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 006 - Statement - Condensed Consolidated Statements of Stockholders' Equity (Unaudited) (Parentheticals) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-condensed-consolidated-statements-of-cash-flows-unaudited" roleURI="http://www.nwpipe.com/20190930/role/statement-condensed-consolidated-statements-of-cash-flows-unaudited"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 007 - Statement - Condensed Consolidated Statements of Cash Flows (Unaudited) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-1-basis-of-presentation" roleURI="http://www.nwpipe.com/20190930/role/statement-note-1-basis-of-presentation"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 008 - Disclosure - Note 1 - Basis of Presentation </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-combination" roleURI="http://www.nwpipe.com/20190930/role/statement-note-2-business-combination"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 009 - Disclosure - Note 2 - Business Combination </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-3-discontinued-operations" roleURI="http://www.nwpipe.com/20190930/role/statement-note-3-discontinued-operations"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 010 - Disclosure - Note 3 - Discontinued Operations </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-inventories" roleURI="http://www.nwpipe.com/20190930/role/statement-note-4-inventories"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 011 - Disclosure - Note 4 - Inventories </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 012 - Disclosure - Note 5 - Leases </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-fair-value-measurements" roleURI="http://www.nwpipe.com/20190930/role/statement-note-6-fair-value-measurements"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 013 - Disclosure - Note 6 - Fair Value Measurements </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-sharebased-compensation" roleURI="http://www.nwpipe.com/20190930/role/statement-note-7-sharebased-compensation"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 014 - Disclosure - Note 7 - Share-based Compensation </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-8-shareholder-rights-plan" roleURI="http://www.nwpipe.com/20190930/role/statement-note-8-shareholder-rights-plan"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 015 - Disclosure - Note 8 - Shareholder Rights Plan </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-9-commitments-and-contingencies" roleURI="http://www.nwpipe.com/20190930/role/statement-note-9-commitments-and-contingencies"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 016 - Disclosure - Note 9 - Commitments and Contingencies </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-revenue" roleURI="http://www.nwpipe.com/20190930/role/statement-note-10-revenue"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 017 - Disclosure - Note 10 - Revenue </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-11-income-taxes" roleURI="http://www.nwpipe.com/20190930/role/statement-note-11-income-taxes"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 018 - Disclosure - Note 11 - Income Taxes </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-12-accumulated-other-comprehensive-loss" roleURI="http://www.nwpipe.com/20190930/role/statement-note-12-accumulated-other-comprehensive-loss"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 019 - Disclosure - Note 12 - Accumulated Other Comprehensive Loss </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-13-net-income-per-share" roleURI="http://www.nwpipe.com/20190930/role/statement-note-13-net-income-per-share"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 020 - Disclosure - Note 13 - Net Income Per Share </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-14-recent-accounting-and-reporting-developments" roleURI="http://www.nwpipe.com/20190930/role/statement-note-14-recent-accounting-and-reporting-developments"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 021 - Disclosure - Note 14 - Recent Accounting and Reporting Developments </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-15-restructuring-" roleURI="http://www.nwpipe.com/20190930/role/statement-note-15-restructuring-"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 022 - Disclosure - Note 15 - Restructuring </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-combination-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-2-business-combination-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 023 - Disclosure - Note 2 - Business Combination (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-inventories-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-4-inventories-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 024 - Disclosure - Note 4 - Inventories (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 025 - Disclosure - Note 5 - Leases (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-fair-value-measurements-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-6-fair-value-measurements-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 026 - Disclosure - Note 6 - Fair Value Measurements (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-sharebased-compensation-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-7-sharebased-compensation-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 027 - Disclosure - Note 7 - Share-based Compensation (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-12-accumulated-other-comprehensive-loss-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-12-accumulated-other-comprehensive-loss-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 028 - Disclosure - Note 12 - Accumulated Other Comprehensive Loss (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-13-net-income-per-share-tables" roleURI="http://www.nwpipe.com/20190930/role/statement-note-13-net-income-per-share-tables"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 029 - Disclosure - Note 13 - Net Income Per Share (Tables) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-1-basis-of-presentation-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-1-basis-of-presentation-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 030 - Disclosure - Note 1 - Basis of Presentation (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-combination-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-2-business-combination-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 031 - Disclosure - Note 2 - Business Combination (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-combination-assets-acquired-and-liabilities-assumed-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-2-business-combination-assets-acquired-and-liabilities-assumed-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 032 - Disclosure - Note 2 - Business Combination - Assets Acquired and Liabilities Assumed (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-2-business-combination-pro-forma-summary-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-2-business-combination-pro-forma-summary-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 033 - Disclosure - Note 2 - Business Combination - Pro Forma Summary (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-3-discontinued-operations-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-3-discontinued-operations-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 034 - Disclosure - Note 3 - Discontinued Operations (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-4-inventories-components-of-inventories-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-4-inventories-components-of-inventories-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 035 - Disclosure - Note 4 - Inventories - Components of Inventories (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 036 - Disclosure - Note 5 - Leases (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases-lease-cost-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases-lease-cost-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 037 - Disclosure - Note 5 - Leases - Lease Cost (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases-future-maturities-of-lease-liabilities-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases-future-maturities-of-lease-liabilities-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 038 - Disclosure - Note 5 - Leases - Future Maturities of Lease Liabilities (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases-lease-terms-and-discount-rates-for-lease-liabilities-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 039 - Disclosure - Note 5 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-5-leases-other-information-related-to-operating-and-finance-leases-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-5-leases-other-information-related-to-operating-and-finance-leases-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 040 - Disclosure - Note 5 - Leases - Other Information Related to Operating and Finance Leases (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-6-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-6-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 041 - Disclosure - Note 6 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-sharebased-compensation-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-7-sharebased-compensation-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 042 - Disclosure - Note 7 - Share-based Compensation (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-sharebased-compensation-sharebased-compensation-expense-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-7-sharebased-compensation-sharebased-compensation-expense-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 043 - Disclosure - Note 7 - Share-based Compensation - Share-based Compensation Expense (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-sharebased-compensation-stock-option-activity-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-7-sharebased-compensation-stock-option-activity-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 044 - Disclosure - Note 7 - Share-based Compensation - Stock Option Activity (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-7-sharebased-compensation-rsu-and-psa-activity-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-7-sharebased-compensation-rsu-and-psa-activity-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 045 - Disclosure - Note 7 - Share-based Compensation - RSU and PSA Activity (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-8-shareholder-rights-plan-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-8-shareholder-rights-plan-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 046 - Disclosure - Note 8 - Shareholder Rights Plan (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-9-commitments-and-contingencies-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-9-commitments-and-contingencies-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 047 - Disclosure - Note 9 - Commitments and Contingencies (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-revenue-1-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-10-revenue-1-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 048 - Disclosure - Note 10 - Revenue 1 (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-10-revenue-2-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-10-revenue-2-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 049 - Disclosure - Note 10 - Revenue 2 (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-11-income-taxes-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-11-income-taxes-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 050 - Disclosure - Note 11 - Income Taxes (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-12-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-12-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 051 - Disclosure - Note 12 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-12-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-12-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 052 - Disclosure - Note 12 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-13-net-income-per-share-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-13-net-income-per-share-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 053 - Disclosure - Note 13 - Net Income Per Share (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-13-net-income-per-share-net-loss-per-basic-and-diluted-weighted-average-common-shares-outstanding-details" roleURI="http://www.nwpipe.com/20190930/role/statement-note-13-net-income-per-share-net-loss-per-basic-and-diluted-weighted-average-common-shares-outstanding-details"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 054 - Disclosure - Note 13 - Net Income Per Share - Net Loss Per Basic and Diluted Weighted Average Common Shares Outstanding (Details) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-14-recent-accounting-and-reporting-developments-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-14-recent-accounting-and-reporting-developments-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 055 - Disclosure - Note 14 - Recent Accounting and Reporting Developments (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | <link:roleType id="statement-note-15-restructuring-details-textual" roleURI="http://www.nwpipe.com/20190930/role/statement-note-15-restructuring-details-textual"> |
| <link:definition xmlns="http://www.xbrl.org/2003/linkbase"> 056 - Disclosure - Note 15 - Restructuring (Details Textual) </link:definition> |
| <link:usedOn> link:calculationLink </link:usedOn> |
| <link:usedOn> link:definitionLink </link:usedOn> |
| <link:usedOn> link:presentationLink </link:usedOn> |
| </link:roleType> |
| | | </xsd:appinfo> |
| | </xsd:annotation> |
| <xsd:element id="nwpx_AcquisitionPercentage" name="AcquisitionPercentage" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_AmendedAndRestatedRightsAgreementExpirationDate" name="AmendedAndRestatedRightsAgreementExpirationDate" nillable="true" substitutionGroup="xbrli:item" type="xbrli:dateItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_AmeronWaterTransmissionGroupLLCMember" name="AmeronWaterTransmissionGroupLLCMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_AtchisonFacilityMember" name="AtchisonFacilityMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_BusinessAcquistionIncreaseDecreaseInInventoriesMeasurementPeriodAdjustment" name="BusinessAcquistionIncreaseDecreaseInInventoriesMeasurementPeriodAdjustment" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_BusinessCombinationBargainPurchaseIncreaseDecreaseInGainRecognizedMeasurementPeriodAdjustment" name="BusinessCombinationBargainPurchaseIncreaseDecreaseInGainRecognizedMeasurementPeriodAdjustment" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContractAssets" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContractAssets" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesContractLiabilities" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesContractLiabilities" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_BusinessInterruptionCosts" name="BusinessInterruptionCosts" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_BusinessInterruptionInsuranceProceeds" name="BusinessInterruptionInsuranceProceeds" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_DemobilizationActivitiesMember" name="DemobilizationActivitiesMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" name="DepreciationAndFinanceLeaseRightOfUseAssetAmortization" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_DividendDistributionUnderShareholderRightsPlan" name="DividendDistributionUnderShareholderRightsPlan" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="nwpx_DocumentAndEntityInformation" name="DocumentAndEntityInformation" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_EstimatedCostOfEPASelectedRemedy" name="EstimatedCostOfEPASelectedRemedy" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_EstimatedTimeToCompleteSelectedEPARemedy" name="EstimatedTimeToCompleteSelectedEPARemedy" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_GainLossOnDispositionOfFacility" name="GainLossOnDispositionOfFacility" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_GainLossOnInsuranceProceeds" name="GainLossOnInsuranceProceeds" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" name="IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_InventoryMember" name="InventoryMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" name="LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_LesseeLeaseDisclosureTextBlock" name="LesseeLeaseDisclosureTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_LesseeLiabilityMaturityTableTextBlock" name="LesseeLiabilityMaturityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_LesseeTermOfContract" name="LesseeTermOfContract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_LowerWillametteGroupMember" name="LowerWillametteGroupMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_NoteToFinancialStatementDetailsTextual" name="NoteToFinancialStatementDetailsTextual" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_NotesToFinancialStatements" name="NotesToFinancialStatements" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_NotesToFinancialStatementsAbstract" name="NotesToFinancialStatementsAbstract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_NumberOfActiveStockIncentivePlans" name="NumberOfActiveStockIncentivePlans" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_NumberOfPotentiallyResponsibleParties" name="NumberOfPotentiallyResponsibleParties" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_NumberOfSeriesJuniorParticipatingPreferredStockSharesReserved" name="NumberOfSeriesJuniorParticipatingPreferredStockSharesReserved" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" name="OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_OutOfPeriodAdjustmentMember" name="OutOfPeriodAdjustmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_PerformanceAwardsIssuedMultiplier" name="PerformanceAwardsIssuedMultiplier" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_PlacedInEscrowUnitilFebruary2018Member" name="PlacedInEscrowUnitilFebruary2018Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_PlacedInEscrowUntilDecember2018Member" name="PlacedInEscrowUntilDecember2018Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" name="PortlandHarborNaturalreSourcesTrusteeCouncilMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_ProceedsFromSaleOfFacility" name="ProceedsFromSaleOfFacility" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_PurchasePriceUnderRights" name="PurchasePriceUnderRights" nillable="true" substitutionGroup="xbrli:item" type="num:perShareItemType" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_RestrictedStockUnitsAndPerformanceShareAwardTargetLevelPercentage" name="RestrictedStockUnitsAndPerformanceShareAwardTargetLevelPercentage" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" name="RestrictedStockUnitsAndPerformanceStockAwardsMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_RightRedemptionValue" name="RightRedemptionValue" nillable="true" substitutionGroup="xbrli:item" type="num:perShareItemType" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" name="ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" name="ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" name="ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="instant"/> |
| <xsd:element id="nwpx_ShareBasedCompensationArrangementByStockBasedPaymentAwardGrantDateFairValue" name="ShareBasedCompensationArrangementByStockBasedPaymentAwardGrantDateFairValue" nillable="true" substitutionGroup="xbrli:item" type="num:perShareItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_ShareholderRightsPlanDisclosureTextBlock" name="ShareholderRightsPlanDisclosureTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/> |
| <xsd:element id="nwpx_ValueOfExercisedRight" name="ValueOfExercisedRight" nillable="true" substitutionGroup="xbrli:item" type="xbrli:decimalItemType" xbrli:periodType="instant"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-12-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" name="statement-statement-note-12-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-12-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" name="statement-statement-note-12-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-12-accumulated-other-comprehensive-loss-tables" name="statement-statement-note-12-accumulated-other-comprehensive-loss-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-13-net-income-per-share-net-loss-per-basic-and-diluted-weighted-average-common-shares-outstanding-details" name="statement-statement-note-13-net-income-per-share-net-loss-per-basic-and-diluted-weighted-average-common-shares-outstanding-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-13-net-income-per-share-tables" name="statement-statement-note-13-net-income-per-share-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-2-business-combination-assets-acquired-and-liabilities-assumed-details" name="statement-statement-note-2-business-combination-assets-acquired-and-liabilities-assumed-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-2-business-combination-pro-forma-summary-details" name="statement-statement-note-2-business-combination-pro-forma-summary-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-2-business-combination-tables" name="statement-statement-note-2-business-combination-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-4-inventories-components-of-inventories-details" name="statement-statement-note-4-inventories-components-of-inventories-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-4-inventories-tables" name="statement-statement-note-4-inventories-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-5-leases-future-maturities-of-lease-liabilities-details" name="statement-statement-note-5-leases-future-maturities-of-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-5-leases-lease-cost-details" name="statement-statement-note-5-leases-lease-cost-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-5-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" name="statement-statement-note-5-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-5-leases-other-information-related-to-operating-and-finance-leases-details" name="statement-statement-note-5-leases-other-information-related-to-operating-and-finance-leases-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-5-leases-tables" name="statement-statement-note-5-leases-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-6-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" name="statement-statement-note-6-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-6-fair-value-measurements-tables" name="statement-statement-note-6-fair-value-measurements-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-7-sharebased-compensation-rsu-and-psa-activity-details" name="statement-statement-note-7-sharebased-compensation-rsu-and-psa-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-7-sharebased-compensation-sharebased-compensation-expense-details" name="statement-statement-note-7-sharebased-compensation-sharebased-compensation-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-7-sharebased-compensation-stock-option-activity-details" name="statement-statement-note-7-sharebased-compensation-stock-option-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| <xsd:element abstract="true" id="nwpx_statement-statement-note-7-sharebased-compensation-tables" name="statement-statement-note-7-sharebased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/> |
| </xsd:schema> |